| NO | システム時計 | 正解曜日 | 正解年齢 | |
| 1 | 99/04/09 | 6 | 金 | 54.9596167008898 |
| 2 | 99/09/09 | 5 | 木 | 55.378507871321 |
| 3 | 99/12/31 | 6 | 金 | 55.6878850102669 |
| 4 | 2000/01/01 | 7 | 土 | 55.6906228610541 |
| 5 | 2000/02/28 | 2 | 月 | 55.8494182067077 |
| 6 | 2000/02/29 | 3 | 火 | 55.8521560574949 |
| 7 | 2000/03/01 | 4 | 水 | 55.854893908282 |
| 8 | 2000/04/01 | 7 | 土 | 55.9397672826831 |
| 9 | 2000/04/22 | 7 | 土 | 55.9972621492129 |
| 10 | 2000/04/23 | 1 | 日 | 56 |
| 11 | 2000/04/24 | 2 | 月 | 56.0027378507871 |
| 12 | 2000/10/01 | 1 | 日 | 56.4407939767283 |
| 13 | 2000/10/10 | 3 | 火 | 56.4654346338125 |
| 14 | 2011/01/01 | 7 | 土 | 66.6913073237509 |
| 15 | 2030/01/01 | 3 | 火 | 85.6919917864476 |
| 16 | 2038/01/19 | 3 | 火 | 93.741273100616 |
Sub y2kset()
Dim kyo As Date
Dim ima As Date
kyo = Date
msg = "システム内蔵の日付を変更する場合入力"
sdate1 = InputBox(msg, "年/月/日指定", kyo)
If sdate1 = "" Then
Exit Sub
End If
sdate = DateValue(sdate1)
Date = sdate
'
ima = Time
msg = "システム内蔵の時間を変更する場合入力"
stim1 = InputBox(msg, "時:分:秒指定", ima)
If sdate1 = "" Then
Exit Sub
End If
stim = TimeValue(stim1)
Time = stim
msg = "現在のシステム時計は:" & Chr$(10) & _
Date & " " & Time
msno = MsgBox(msg, 3, "時刻確認")
If msno = 7 Then
y2kset
ElseIf msno = 2 Then
Exit Sub
End If
End Sub
上記マクロにより簡単にシステム日付を変えられるが、
変更した場合は必ず現在の日付に戻す事。
再セットを忘れると思わぬ不具合が発生する可能性ある。失敗談:日付を
2000年にしたままファイルを更新し、そのファイルをサーバーへ送ったが
後で作成日が2000年になっている事に気づき現在日付に戻し再送付した。
しかし、送ったDADAが正常か見ようとすると常に古いファイルが表示され
かなり悩んだ。原因はキャッシュ表示が作成日の新しいファイル(作成日2000年)
を常に表示した為で、電源を切り再立ち上げをしても直らなかった。
「Tenporary Internet Files」フォルダーに入っているDataを全て消去し解決。
Sub y2kt2a()
Date = #99/12/31#
Time = #23:59:56#
MsgBox "現在のシステム時計 " & Date & " " & Time & Chr$(10) & _
"(約5秒経ってから[OK]をクリックして下さい)"
MsgBox "現在のシステム時計 " & Date & " " & Time & Chr$(10) & _
"(2000/01/01になっていればシステムは正常)"
End Sub
Sub y2kt2b()
Date = #2000/02/28#
Time = #23:59:56#
MsgBox "現在のシステム時計 " & Date & " " & Time & Chr$(10) & _
"(約5秒経ってから[OK]をクリックして下さい)"
MsgBox "現在のシステム時計 " & Date & " " & Time & Chr$(10) & _
"(2000/02/29になっていればシステムは正常)"
End Sub
(このマクロはシステム時刻を変えています。要再セット)
Sub y2kt3a()
Date = #99/12/31#
Time = #23:59:00#
MsgBox "現在のシステム時計 " & Date & " " & Time
End Sub
'
Sub y2kt3b()
Date = #2000/02/28#
Time = #23:59:00#
MsgBox "現在のシステム時計 " & Date & " " & Time
End Sub
'
Sub y2kt3c()
MsgBox "現在のシステム時計 " & Date & " " & Time
End Sub
(このマクロはシステム時刻を変えています。要再セット)
Sub y2kt3d()
Date = #yy/MM/dd#
MsgBox "現在のシステム時計 " & Date
End Sub
又は年を4桁
Sub y2kt3e()
Date = #yyyy/MM/dd#
MsgBox "現在のシステム時計 " & Date
End Sub
下表は、年の指定を2桁又は4桁で行なった場合、ExcelのVersionで
相違があるか調べたのもである。| Excel5.0 | Excel95 | Excel97 /2000 | ||||||
| マクロ記述 | 書き換わる | 結果 | マクロ記述 | 書き換わる | 結果 | マクロ記述 | 書き換わる | 結果 |
| #1900/01/01# 〜 #1929/01/01# |
#00/01/01# 〜 #29/01/01# |
実行時 エラ− < | #1900/01/01# 〜 #1929/01/01# |
|
実行時 エラ− |
#1/1/1900# 〜 #1/1/1929# |
|
実行時 エラ− |
| #1930/01/01# 〜 #1979/01/01# |
#30/01/01# 〜 #79/01/01# |
#1930/01/01# 〜 #1979/01/01# |
#30/01/01# 〜 #79/01/01# |
実行時 エラ− |
#1/1/1930# 〜 #1/1/1979# |
#1/1/30# 〜 #1/1/79# |
実行時 エラ− | |
| #1980/01/01# 〜 #1999/01/01# |
#80/01/01# 〜 #99/01/01# |
OK |
#1980/01/01# 〜 #1999/01/01# |
#80/01/01# 〜 #99/01/01# |
OK |
#1/1/1980# 〜 #1/1/1999# |
#1/1/80# 〜 #1/1/99# |
OK |
| #2000/01/01# 〜 #2079/01/01# |
|
OK |
#2000/01/01# 〜 #2079/01/01# |
|
OK |
#1/1/2000# 〜 #1/1/2079# |
|
OK |
| #2080/01/01# 〜 #2099/01/01# |
|
実行時 エラ− |
#2080/01/01# 〜 #2099/01/01# |
|
実行時 エラ− |
#1/1/2080# 〜 #1/1/2099# |
|
実行時 エラ− |
| #00/01/01# 〜 #29/01/01# |
|
実行時 エラ− < | #00/01/01# 〜 #29/01/01# |
#2000/01/01# 〜 #2029/01/01# |
OK |
#1/1/00# 〜 #1/1/29# |
#1/1/2000# 〜 #1/1/2029# |
OK |
| #30/01/01# 〜 #79/01/01# |
|
#30/01/01# 〜 #79/01/01# |
|
実行時 エラ− |
#1/1/30# 〜 #1/1/79# |
97エラ | Excel2000は 1930〜1979 |
OK |
| #80/01/01# 〜 #99/01/01# |
|
OK |
#80/01/01# 〜 #99/01/01# |
|
OK |
#1/1/80# 〜 #1/1/99# |
OK | Excel2000は 1980〜1999 |

Sub y2kt4()
hia = InputBox("「月/日」を入力して下さい", "集計月/日")
If hia = "" Then
Exit Sub
End If
If IsDate(hia) Then
hi = CDate(hia)
Else
MsgBox "日付を入力して下さい"
Exit Sub
End If
MsgBox hi
End Sub
結果:Function tosi(c As Integer) Application.Volatile tosi = (Now - Cells(c, 2)) / 365.25 End Function
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub y2kt5()
Range("B2").Select
Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("B2"), _
Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End Sub
| A | B |
| 年齢2.xls | 2000/12/31 0:01:28 |
| y2ktwit.xls | 2000/02/29 14:11:18 |
| 年齢.html | 1999/12/31 0:00:54 |
| y2kt1.xls | 1999/12/20 14:09:16 |
| y2kt2.xls | 1999/11/11 14:09:50 |
Sub y2kt6()
rc1 = 6 '最終セル
hiz = DateValue("99/12/31")
For i = 2 To rc1
If Cells(i, 2) - hiz >= 0 Then
Cells(i, 3) = 1
Else
Cells(i, 3) = 0
End If
Next
End Sub
| A | B | C |
| test2.xls | 2000/12/31 0:01:28 | 1 |
| y2ktwit.xls | 2000/02/29 14:11:18 | 1 |
| test1.html | 1999/12/31 0:00:54 | 1 |
| y2kt1.xls | 1999/12/20 14:09:16 | 0 |
| y2kt2.xls | 1999/11/11 14:09:50 | 0 |
| 表1.年/月/日を表示 | 表2.月/日を表示 |
|
|
Sub y2kt7a()
dat = "12/31"
Range("a1").Select
Selection.AutoFilter Field:="2", Criteria1:=dat
End Sub

Sub y2kt7b()
dat = "21/12/31"
Range("a1").Select
Selection.AutoFilter Field:="2", Criteria1:=dat
End Sub

Sub y2kt7c()
msg = "検索する 年/月/日 を入力して下さい"
dat = InputBox(msg, "検索日入力")
Range("a1").Select
Selection.AutoFilter Field:="2", Criteria1:=dat
End Sub
表示形式が「2/29/00」のようになっている場合は、「02/29/00」と月/日/年で入力